package cn.tedu.csmall.product.exception.handler;

import cn.tedu.csmall.product.exception.ServiceException;
import cn.tedu.csmall.product.web.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 定义全局处理异常类，那我们就不用再Controller里去捕获异常了，全局异常类可以处理
 * @author XingHaiYang
 * @date 2022/11/1 11:47
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {


    public GlobalExceptionHandler() {
        log.debug("调用全局异常处理机制处理项目中可能遇到的所有异常");
    }

    @ExceptionHandler
    public JsonResult handleServiceException(ServiceException e){
        log.error("统一处理异常ServiceException，将向客户返回的信息={}",e.getMessage());
        return JsonResult.fail(e);
    }

    @ExceptionHandler
    public JsonResult handleThrowable(Throwable e){
        log.error("统一处理不能被识别的异常={}，将向客户返回的信息={}",e.getClass().getName(),e.getMessage());
        return JsonResult.fail(e);
    }
}
